# 编译器
CC = gcc

# 编译选项
CFLAGS = -Wall -g -I./

# LDFLAGS = -lncursesw
# -lncurses

# 目标文件
TARGET = Stack

# 源文件目录和对象文件目录
SRC_DIR = ./
OBJ_DIR = ./

# 源文件和对应的对象文件
SRCS = $(wildcard $(SRC_DIR)*.c)
OBJS = $(patsubst $(SRC_DIR)%.c, $(OBJ_DIR)/%.o, $(SRCS))

# wildcard 函数会展开符合指定模式的文件列表。在这里，$(SRC_DIR)/*.c 表示获取目录 $(SRC_DIR) 下所有以 .c 结尾的文件。
# patsubst 函数用于模式替换。它的作用是将 $(SRCS) 中的每个文件路径模式 $(SRC_DIR)/%.c 替换为 $(OBJ_DIR)/%.o。

# 目标: 生成可执行文件
$(TARGET): $(OBJS)
	$(CC) $(OBJS) -o $@ 

# 生成对象文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@

# 清理目标
.PHONY: clean
clean:
	rm -f $(OBJ_DIR)/*.o 

